package com.smart.community.property.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.smart.community.property.entity.ReminderRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 催缴/沟通记录Mapper接口
 * 严格遵循《智慧社区微服务架构总览.md》《系统状态枚举权威标准声明.md》
 * @author Wu.Liang
 * @since 2025-07-22
 */
@Mapper
public interface ReminderRecordMapper extends BaseMapper<ReminderRecord> {

    /**
     * 根据费用ID和类型查询催缴记录列表
     * @param feeId 费用ID
     * @param feeType 费用类型
     * @return 催缴记录列表
     */
    List<ReminderRecord> selectByFeeIdAndType(@Param("feeId") Long feeId, @Param("feeType") Integer feeType);

    /**
     * 根据用户ID查询催缴记录列表
     * @param userId 用户ID
     * @return 催缴记录列表
     */
    List<ReminderRecord> selectByUserId(@Param("userId") Long userId);

    /**
     * 根据记录类型查询催缴记录列表
     * @param reminderType 记录类型
     * @return 催缴记录列表
     */
    List<ReminderRecord> selectByReminderType(@Param("reminderType") Integer reminderType);

    /**
     * 根据状态查询催缴记录列表
     * @param reminderStatus 记录状态
     * @return 催缴记录列表
     */
    List<ReminderRecord> selectByReminderStatus(@Param("reminderStatus") Integer reminderStatus);

    /**
     * 统计某费用的催缴记录数量
     * @param feeId 费用ID
     * @param feeType 费用类型
     * @return 记录数量
     */
    int countByFeeIdAndType(@Param("feeId") Long feeId, @Param("feeType") Integer feeType);

    /**
     * 统计某用户的催缴记录数量
     * @param userId 用户ID
     * @return 记录数量
     */
    int countByUserId(@Param("userId") Long userId);
} 